﻿// JScript 文件

/**
* add by jerry.zhang on 2011/9/11
* version 1.0
**/
(function ($) {
    /**定义一个公有的方法*/
    $.fn.showComponent = function (options) {
        //alert("ok");
        var opts = $.extend({}, $.fn.showComponent.defaults, options);
        var $this = $(this);
        $this.totalRows = 0;
        $this.currentPage = 1;
        init($this, opts);
        /**点击输入框弹出选项层*/
        $this.keydown(function () {
            var A_top = $(this).offset().top + $(this).outerHeight(true);
            var A_left = $(this).offset().left;
            selectVal($this, opts);
            $("#" + opts.selectId).show().css({ "position": "absolute", "top": A_top + "px", "left": A_left + "px" });
        });

        /**添加选项鼠标划过选中效果*/
        $("#" + opts.selectId).find("dl > dd").hover(
		  function () {
		      $("#" + opts.selectId).find(".popSelect").children().removeClass("hover");
		      $(this).addClass("hover");
		  }
		);

        /**点击选项为文本框赋值*/
        $("#" + opts.selectId).find("dl > dd").click(function () {
            $this.val($(this).find("span").text());
            var text = $(this).find("span").text();
            $("#ProCode").val(text);
            var Data = SubText(opts.obj, text);
            var num = $("#Num").val() == "" ? 0 : $("#Num").val();
            $("#ProLx").val(Data.ItemClass);
            $("#Money").val(num * Data.BasicPrice);
            $("#Dprice").val(Data.BasicPrice);
            $("#jz").val(Data.Weight);
            $("#NewBs").val(Data.MinMultiple);
            $("#MinDl").val(Data.MinNumber);
            $("#Hd_sl").val(Data.TaxRate);
            if ($(".txtShowDiv").length > 0) {
                $(".txtShowDiv").val($(this).find("span").text());
            }
            $(".txtTmpVal").val($(this).find("span").text());
            $(".txtVal").val($(this).find("b").text());
            $("#" + opts.selectId).hide();
        }
		);
        function SubText(json, text) {
            var i;
            $.each(json, function (index, data) {
                if (Trim(data.ItemCode) == Trim(text)) {
                    i = index;
                    return;
                }
            })
            return json[i];
        }
        function Trim(str) {
            return str.replace(/(^\s*)|(\s*$)/g, "");
        }
        /**停止事件的传播*/
        $("#" + opts.selectId).click(function (e) {
            e.stopPropagation();
        });

        /**点击除输入框以外的地方会隐藏选项层*/
        $(document).click(function (event) {
            if (event.target.id != $this.selector.substring(1)) {
                $("#" + opts.selectId).hide();
            }
        });

        //		/**监听键盘事件*/
        //		$this.keyup(function(event){
        //        	switch(event.keyCode){
        //	        	case 38:     //上键，选中上一元素
        //	        		prevElement($this,options);
        //	        		break;
        //	        	case 40:     //下键，选中下一元素
        //	        		nextElement($this,opts);
        //					break
        //	    		case 37:     //左，实现上一页效果
        //	    			pageUp($this,opts);
        //					if($this.currentPage>1){
        //						$this.currentPage--;
        //					}
        //	    			break;
        //	    		case 39:     //右，实现下一页效果
        //	    			pageDown($this,opts);
        //					if($this.currentPage<$this.totalPages){
        //						$this.currentPage++;
        //					}
        //	    			break;
        //	    		default:
        //	    			//selectVal($this,opts);
        //	    			break;
        //        	}
        //        });


    };

    /**定义默认参数*/
    $.fn.showComponent.defaults = {
        pageSize: 10,
        pageNum: 1
    };

    /**定义一个私有的方法*/
    function sayHello(options) {
        alert(options.pageSize);
    };

    /**根据输入内容匹配选项*/
    function selectVal($this, options) {
        var txt = $this.val();
        $("#" + options.selectId).find(".popSelect dd").hide();
        var ddarrs = $("#" + options.selectId).find(".popSelect dd");
        $this.totalRows = $("#" + options.selectId).find(".popSelect dd").size();
        $this.totalPages = Math.floor($this.totalRows / options.pageSize);
        if ($this.totalRows % options.pageSize > 0) {
            $this.totalPages++;
        }
        if ($this.totalPages > options.pageNum) {
            $this.totalPages = options.pageNum;
        }
        var pageNum = options.pageNum;
        if (pageNum > $this.totalPages) {
            pageNum = $this.totalPages;
            if (pageNum == 0) pageNum = 1;
        }
        for (var i = 0; i < options.pageSize; i++) {
            ddarrs.eq(i).show();
        }
        initPage($this, options, pageNum);
    }


    /**跳转到指定的页号*/
    function goPage($this, options, pn) {
        if (pn > options.pageNum) {
            pn = options.pageNum;
        }
        $("#" + options.selectId).find(".popSelect dd").hide();
        var startIndex = options.pageSize * (pn - 1);
        var endIndex = options.pageSize * (pn - 1) + options.pageSize;
        var txt = $this.val();
        var count = $("#" + options.selectId).find(".popSelect dd:contains('" + txt + "')").size();
        if (endIndex > count) {
            endIndex = count;
        }
        for (var i = startIndex; i < endIndex; i++) {
            $("#" + options.selectId).find(".popSelect dd:contains('" + txt + "')").eq(i).show();
        }
        $("#" + options.selectId).find(".pagenum").find("a").removeClass("curr");
        $("#" + options.selectId).find(".pagenum").find("a").eq(pn).addClass("curr");

    };
    /**初始化分页数据*/
    function init($this, options) {
        $("#" + options.selectId).find(".popSelect dd").hide();
        for (var i = 0; i < options.pageSize; i++) {
            $("#" + options.selectId).find(".popSelect dd").eq(i).show();
        }
        $this.totalRows = $("#" + options.selectId).find(".popSelect dd").size();
        $this.totalPages = Math.floor($this.totalRows / options.pageSize);
        if ($this.totalRows % options.pageSize > 0) {
            $this.totalPages++;
        }
        if ($this.totalPages > options.pageNum) {
            $this.totalPages = options.pageNum;
        }
        var pageNum = options.pageNum;
        if (pageNum > $this.totalPages) {
            pageNum = $this.totalPages;
            if (pageNum == 0) pageNum = 1;
        }
        initPage($this, options, pageNum);
    };

    function initPage($this, options, pageNum) {
        var _page_html = '<a>&lt;&minus;</a>';
        for (var i = 1; i <= pageNum; i++) {
            if (i == 1) {
                _page_html += '<a class=\"curr\">' + i + '</a>';
            } else {
                _page_html += '<a>' + i + '</a>';
            }
        }
        _page_html += '<a>&minus;&gt;</a>';
        $("#" + options.selectId).find(".pagenum").html(_page_html);
        $("#" + options.selectId).find(".pagenum").find("a").click(function () {
            if ($(this).text() == '<?') {
                pageUp($this, options);
                if ($this.currentPage > 1) {
                    $this.currentPage--;
                }
            } else if ($(this).text() == '?>') {
                pageDown($this, options);
                if ($this.currentPage < $this.totalPages) {
                    $this.currentPage++;
                }
            } else {
                goPage($this, options, $(this).text());
                $this.currentPage = $(this).text();
            }

        });
    };

    /**下一页*/
    function pageDown($this, options) {
        if ($this.currentPage + 1 > $this.totalPages) {
            goPage($this, options, $this.totalPages);
        } else {
            goPage($this, options, $this.currentPage + 1);
        }
    };
    /**上一页*/
    function pageUp($this, options) {
        if ($this.currentPage - 1 <= 0) {
            goPage($this, options, 1);
        } else {
            goPage($this, options, $this.currentPage - 1);
        }
    };

    /**下一个元素*/
    function nextElement($this, options) {
        var txt = $this.val();
        var els = $("#" + options.selectId).find(".popSelect dd:visible");
        if (els.hasClass("hover") == false) {
            els.eq(0).addClass("hover");
        } else {
            for (var i = 0; i < els.length; i++) {
                if ($(els[i]).hasClass("hover")) {
                    $(els[i]).removeClass("hover");
                    if (i == els.length - 1) {
                        $(els[0]).addClass("hover");
                        break;
                    } else {
                        $(els[i + 1]).addClass("hover");
                        break;
                    }
                }
            }

        }
    };

    /**上一个元素*/
    function prevElement($this, options) {
        var txt = $this.val();
        var els = $("#" + options.selectId).find(".popSelect dd:visible");
        if (els.hasClass("hover") == false) {
            els.eq(els.length - 1).addClass("hover");
        } else {
            for (var i = 0; i < els.length; i++) {
                if ($(els[i]).hasClass("hover")) {
                    $(els[i]).removeClass("hover");
                    if (i == 0) {
                        $(els[els.length - 1]).addClass("hover");
                        break;
                    } else {
                        $(els[i - 1]).addClass("hover");
                        break;
                    }
                }
            }
        }
    };


})(jQuery);